﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AlgoritimoGenetico.dados;

namespace AlgoritimoGenetico
{
    public class Gene
    {
        #region Construtor
        public Gene()
        {
            this.Nome = null;
            this.Caracteristicas = null;
        }
        public Gene(string nome, List<float> caracteristicas)
        {
            this.Nome = nome;
            this.Caracteristicas = caracteristicas;
        }
        public Gene(Cidade cidade)
        {
            this.Nome = cidade.Nome;
            this.Caracteristicas = cidade.Caracteristicas;
        }
        #endregion

        #region Propriedades
        public List<float> Caracteristicas { get; set; }
        public string Nome { get; set; }
        public float Fitness;
        #endregion

        #region Métodos
        public override string ToString()
        {
            string bytes = string.Empty;
            bytes = string.Concat(bytes, "Nome: ", this.Nome, "\nCaracteristicas: ");
            foreach (float caracteristica in Caracteristicas)
            {
                bytes = string.Concat(bytes, caracteristica, " ");
            }
            return bytes;
        }
        public Gene Clone()
        {
            Gene clone = new Gene();
            clone.Nome = (string)this.Nome.Clone();
            clone.Fitness = this.Fitness;
            clone.Caracteristicas = new List<float>(this.Caracteristicas.Count);
            foreach (float carac in this.Caracteristicas)
            {
                clone.Caracteristicas.Add(carac);
            }

            return clone;
        }
        #endregion
    }
}
